package com.yycx.module.bus.provider.service;

import com.yycx.common.base.entity.EntityMap;
import com.yycx.common.mybatis.base.service.IBaseService;
import com.yycx.common.mybatis.model.ResultBody;
import com.yycx.common.security.OpenUser;
import com.yycx.module.bus.client.entity.BusDrugs;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

/**
 * 药品 接口
 *
 * @author flyme
 * @date 2020-07-26
 */
public interface BusDrugsService extends IBaseService<BusDrugs> {

    /**
     * 同步海鹰商品
     *
     * @param openUser
     */
    void syncHyDrug(OpenUser openUser);

    /**
     * 更新零售价
     * @param file
     * @param params
     * @return
     */
    ResultBody importData(MultipartFile file, Map params);

    /**
     * 根据商品ID查询批号
     *
     * @param drugNo
     * @param hyDeptNo
     * @return
     */
    List<EntityMap> selectLotNoByDrugsId(String drugNo,String hyDeptNo);

    /**
     * 查询客户商品销售历史
     *
     * @param customCode
     * @param drugNo
     * @return
     */
    List<EntityMap> getHistoryDrug(String customCode, String drugNo);


    /**
     * 查询商品列表
     *
     * @param title
     * @param hyDeptNo
     * @return
     */
    List<EntityMap> selectTop10HyDrugList(String hyDeptNo, String title);


    /**
     * 查询商品
     *
     * @param drugsName
     * @param drugSpec
     * @return
     */
    BusDrugs selectByDrugNameAndSpec(String drugsName, String drugSpec, String producersName);

    /**
     * 模糊查询商品
     * @param drugsName
     * @param drugsSpec
     * @return
     */
    List<EntityMap> selectLikeByDrugNameAndSpec(String drugsName, String drugsSpec);

    /**
     * 设置商品结算政策
     *
     * @param policyDrugId
     * @param drugIds
     */
    void saveAuthDrugs(Long policyDrugId, String... drugIds);

    /**
     * 根据商品编码查询
     *
     * @param drugsNo
     * @param companyId
     * @return
     */
    BusDrugs selectByDrugNo(String drugsNo, Long companyId);

    /**
     * 获取已关联政策的商品id
     * @param policyDrugId
     * @return
     */
    List<Long> getAuthList(Long policyDrugId);


    /**
     * 重新在单数
     */
    ResultBody updateOnUseCount(Integer drugLotId,String drugNo, String drugLotNo, String storeCode);

    /**
     * 重新计算商品目录在单数
     * @param drugNo
     * @return
     */
    ResultBody updateDrugOnUseCount(String drugNo);

}
